A network element can include two different planes that are used to process network traffic, a data plane and a control plane. The data plane receives, processes, and forwards network traffic using various configuration data (e.g., forwarding, security, quality of service (QoS), and other network traffic processing information). For example, for each received packet of the network traffic, the data plane determines a destination address of that packet, looks up the requisite information for that destination in one or more tables stored in the data plane, and forwards the packet out the proper outgoing interface. The control plane gathers the configuration data from different sources (e.g., locally stored configuration data, via a command line interface, or other management channel such as Simple Network Management Protocol (SNMP) and configures the data plane using the configuration data.
The control plane includes a central processing unit (CPU) that will write configuration data to the data plane. For each write, the CPU retrieves the data from memory (e.g., Dynamic Random Access Memory (DRAM) memory that is part of the control plane), sends this data to across a bus (such as a Peripheral Components Interconnect (PCI) bus), and waits for confirmation that the data is stored in the data plane. This can, however, be a slow process because the CPU needs to wait for confirmation that the data is stored in the data plane and the travel across the bus between the control and data plane can be slow. Thus, the overall process of writing data to the data plane can be a slow process. This is compounded if there are multiple hardware forwarding engines that each uses the same copy of the configuration data. For example, updating a network element with 48 hardware forwarding engines by the CPU can take a relatively long time, especially for configuration data that can be quickly changing or large, such as routing or media access control (MAC) tables.